Talk:Programming language specification
![]() | This article is rated Start-class on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | ||||||||||
|
A summary of this article appears in Programming language. |
Test suites
[edit]I am not aware of any language that is defined purely in terms of the behavior required by a test suite. If you define a test suite as the set of all programs written in a language, then there are some languages that could be said to be defined in terms of the programs that currently exist. But I don't know of any language where a hand written test suite plays a strong part in the language definition (although Ada comes close; I have heard stories of how the language definition was changed to match that of the test suite). Derek farn 22:02, 5 June 2006 (UTC)
- Does this count? It is not part of the Ada Reference Manual, but in practice it plays a role in the social process of Ada programming and implementation not unlike that of a part of the language specification. k.lee 22:08, 5 June 2006 (UTC)
- I think the Ada test suite started out as just that, a test suite. Over time it took on this new role. I suspect that the Ada people would argue until blue in the face that it was not true. Do you fancy reading through the Ada committee papers looking for the smoking gun? Derek farn 00:50, 6 June 2006 (UTC)
- Truthfully, I'm not that interested in whether Ada test suite is technically part of the capital-L Language Reference Manual or not. To me, a language specification (little-l) includes any artifacts that are self-consciously used by a language community to reach consensus on that language's meaning. This article should treat the subject of language specification broadly: the tools, process, and artifacts of language specification, not just the documents that are officially called "language specifications". It seems obvious to me that a test suite can, in principle, play some role in language specification, and so some discussion of test suites is in order. If you want to edit the text to say that in practice, (almost?) no language is officially defined via test suite, and maybe cut down the size of the test suite section, then WP:BB. k.lee 01:01, 6 June 2006 (UTC)
Automated tools
[edit]This has crept back into the article a couple of times, so I want to record this here. The idea that automated program reasoning tools can only scale to programs of a few hundred lines is incorrect. The scalability of a program reasoning tool depends on many factors, including
- the scalability of the underlying analysis,
- the degree of "acceptable" conservatism in the results,
- the complexity of the property that is being proved, and
- the extent to which the reasoning can be made modular.
At the extreme, type checkers are a form of lightweight automated reasoning tool that easily scales to programs as large as any currently in existence, and modern type system designers spend a lot of time thinking about formal semantics. k.lee 01:30, 8 June 2006 (UTC)
- Excellent points. --Allan McInnes (talk) 01:43, 8 June 2006 (UTC)
- I think the new wording makes the point that it is all about the computation resources required vs. the amount of analysis that is being attempted. After all compilers perform some kinds of analysis and they can compile the biggest programs that exist ;-) Derek farn 23:19, 8 June 2006 (UTC)
- How do you define "full formal verification"? --Allan McInnes (talk) 15:37, 9 June 2006 (UTC)
Lists in the leader
[edit]The lists in the leader make no sense to me. One claims to be about "entities that are usually included in a specification", and yet keeps getting edited as if it was "ways to specify a language". The second list claims to be about "ways to write a specification", and (given the current introductory sentence of the list) ends up effectively claiming that "The behavior of a model implementation written in a programming language (e.g., Prolog)" (and "entity" from the first list) can be "written using a natural language". Which makes no sense at all. What exactly is the point of having these separate lists, other than an apparent desire to move any mention of formal semantics out of the first list? --Allan McInnes (talk) 15:20, 9 June 2006 (UTC)
- I am not happy with the term 'entities', but what else would you call something that could be an translator, a language, or an implementation? Formal semantics is a way of writing a specification, but this specification could be of a translator, source code, or an implementation. Derek farn 17:48, 9 June 2006 (UTC)
- Formal semantics is a way of explicitly writing the language semantics, just as BNF is a formal way of explicitly writing the syntax. Yes, one can also use formal specification languages to define translators or implementations, but from the perspective of language specification the definitions of translators and implementations are implicit definitions of the language syntax and semantics. I'm going to take another stab at reworking the lists. Let me know what you think. --Allan McInnes (talk) 18:35, 9 June 2006 (UTC)
Syntax
[edit]I do not know why people are using the term alphabet in the context of computer languages. The terms characters and character sets are totally valid and reasonable. The article currently says that the language syntax usually consists of, among other things, an alphabet. I will change that to character set. For one thing, an alphabet is only letters, no digits and no punctuation. Sam Tomato (talk) 21:09, 21 February 2024 (UTC)
Also, it is not true that the specifications of languages use regular expressions to define the language. Some compilers might use regular expressions but not the specifications. I however am not sure what term(s) to use to describe the specifications. Sam Tomato (talk) 21:18, 21 February 2024 (UTC)